package com.model.dto.sys.userController;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

@Data
public class RegisterUserDTO {
    /** 登录名 */
    @ApiModelProperty(value = "用户名不能为空，用户名长度限制为50，用户名必须是字母开头由数字或英文字母组成",required = true)
    @NotNull(message = "用户名不能为空")
    @Size(min = 1, max = 50, message = "用户名长度限制为50")
    @Pattern(regexp = "^[A-Za-z][A-Za-z0-9]+$", message = "用户名必须是字母开头由数字或英文字母组成")
    String name;

    @ApiModelProperty(value = "密码不能为空，密码长度限制为6~16，至少1个字母，1个数字和1个特殊字符",required = true)
    @NotNull(message = "密码不能为空")
    @Size(min = 6, max = 16, message = "密码长度限制为16")
    @Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,16}$", message = "密码长度限制为8~16，至少1个字母，1个数字和1个特殊字符")
    String password;

    /** 手机号 */
    @ApiModelProperty(value = "手机号长度为11位，手机号只能是数字",required = true)
    @NotNull(message = "手机号不能为空")
    @Size(min = 11, max = 11, message = "手机号长度为11位")
    @Pattern(regexp = "^[0-9]*$", message = "手机号只能是数字")
    String mobile;

    /** 手机号验证码 */
    @ApiModelProperty(value = "手机号验证码，验证码长度限制为4位")
    @Size(min = 4, max = 4, message = "验证码长度限制为4位")
    String mobileCode;

    /** 显示名称 */
    @ApiModelProperty(value = "显示名称长度限制为128")
    @Size(min = 0, max = 128, message = "显示名称长度限制为128")
    String fullName;

    /** 邮箱 */
    @ApiModelProperty(value = "邮箱长度限制为50")
    @Size(min = 0, max = 50, message = "邮箱长度限制为50")
    @Pattern(regexp = "\\b[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}\\b", message = "邮箱格式不合法")
    String email;

    @ApiModelProperty(value = "邮箱验证码，验证码长度限制为4位")
    @Size(min = 4, max = 4, message = "验证码长度限制为4位")
    String emailCode;

}
